//void BFS(LGraph Graph, Vertex S, void (*Visit)(Vertex)) {
//	Visit(S);
//	Visited[S] = true;
//	Vertex queue[100000];
//	int base, top = 0;
//	queue[top] = S;
//	top++;
//	PtrToAdjVNode p;
//	while (top - base > 0) {
//		Vertex x = queue[base];
//		base++;;
//		p = Graph->G[x].FirstEdge;
//		while (p) {
//			Vertex v = p->AdjV;
//			if (!Visited[v]) {
//				Visit(v);
//				Visited[v] = true;
//				queue[top] = v;
//				top++;
//			}
//			p = p->Next;
//		}
//	}
//}
